<?php

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 * Description of Indicador
 *
 * @author thiago
 */
class GerarIndicadores extends AppModel{
  public $useTable = "tab_chamado";

  public function area($data_inicio = null, $data_fim = null){
    $this->hasMany = array(
            'Area' => array(
                'className' => 'Area',
            )
        );

        if(is_null($data_inicio) || is_null($data_fim)){
            $data_inicio = date('Y-m-01');
            $data_fim = date('Y-m-t');

            //$data_inicio = '2012-04-02';
            //$data_fim = '2016-04-29';
        }

        $indicadores = array();

        $areas = $this->Area->listaAreas();
         /** @var $i equivade ao id_area */
        foreach ($areas as $i => $area) {
            $count = $this->find("count",
                array("conditions" =>
                    array(
                        "GerarIndicadores.id_area =" => $i,
                        'GerarIndicadores.data_abertura >=' => $data_inicio,
                        'GerarIndicadores.data_atendimento <=' => $data_fim,
                    )
                )
            );
            if($count > 0){
                $indicadores['inidicador_area'][$i]['total'] = $count;
                $busca_areas = $this->Area->find("first",
                    array("conditions" => array("Area.id =" => $i)));
                $indicadores['inidicador_area'][$i]['Area'] = $busca_areas['Area'];
            }
        }

        return $indicadores;
  }

  public function unidade($data_inicio = null, $data_fim = null){
    $this->hasMany = array(
            'Unidade' => array(
                'className' => 'Unidade',
            )
        );

        if(is_null($data_inicio) || is_null($data_fim)){
            $data_inicio = date('Y-m-01');
            $data_fim = date('Y-m-t');
            //$data_inicio = '2012-04-02';
            //$data_fim = '2016-04-29';
        }

        $indicadores = array();

        $unidades = $this->Unidade->listaUnidades();
        /** @var $i equivade ao id_unidade */
        foreach($unidades as $i => $unidade){
            $count = $this->find("count", 
                array("conditions" => array(
                        "GerarIndicadores.id_unidade =" => $i,
                        'GerarIndicadores.data_abertura >=' => $data_inicio,
                        'GerarIndicadores.data_atendimento <=' => $data_fim,
                    )
                )
            );
            if($count > 0){
                $indicadores['inidicador_unidade'][$i]['total'] = $count;
                $busca_unidades = $this->Unidade->find("first",
                    array("conditions" => array("Unidade.id =" => $i)));
                $indicadores['inidicador_unidade'][$i]['Unidade'] = $busca_unidades['Unidade'];
            }
        }

        return $indicadores;
  }

   public function grupo($data_inicio = null, $data_fim = null){
    $this->hasMany = array(
            'Grupo' => array(
                'className' => 'Grupo',
            )
        );

        if(is_null($data_inicio) || is_null($data_fim)){
            $data_inicio = date('Y-m-01');
            $data_fim = date('Y-m-t');

            //$data_inicio = '2012-04-02';
            //$data_fim = '2016-04-29';
        }

        $indicadores = array();

        $grupos = $this->Grupo->listagrupo();
         /** @var $i equivade ao id_grupo */
        foreach($grupos as $i => $grupo){
            $count = $this->find("count",
                array("conditions" =>
                    array(
                        "GerarIndicadores.id_grupo =" => $i,
                        'GerarIndicadores.data_abertura >=' => $data_inicio,
                        'GerarIndicadores.data_atendimento <=' => $data_fim,
                    )
                )
            );

            if($count > 0){
                $indicadores['inidicador_grupo'][$i]['total'] = $count;
                $busca_grupos = $this->Grupo->find("first",
                    array("conditions" => array("Grupo.id =" => $i)));

                $indicadores['inidicador_grupo'][$i]['Grupo'] = $busca_grupos['Grupo'];

                $media = $this->find('first',
                    array(
                        "conditions" => array("GerarIndicadores.id_grupo =" => $i),
                        'fields' => array(
                            "FORMAT(AVG(GerarIndicadores.hora_realizada), '#.#0') AS media"
                        )
                    )
                );
                $indicadores['inidicador_grupo'][$i]['media'] = $media[0]['media'];
            }
        }

        return $indicadores;
  }

     public function subGrupo($data_inicio = null, $data_fim = null){
        $this->hasMany = array(
            'SubGrupo' => array(
                'className' => 'SubGrupo',
            )
        );

        if(is_null($data_inicio) || is_null($data_fim)){
            $data_inicio = date('Y-m-01');
            $data_fim = date('Y-m-t');

            //$data_inicio = '2012-04-02';
            //$data_fim = '2016-04-29';
        }

        $indicadores = array();

        $sub_grupos = $this->SubGrupo->listaSubGrupo();
         /** @var $i equivade ao id_grupo */
        foreach($sub_grupos as $i => $sub_grupo){
            $count = $this->find("count",
                array("conditions" =>
                    array(
                        "GerarIndicadores.id_sub_grupo" => $i,
                        'GerarIndicadores.data_abertura >=' => $data_inicio,
                        'GerarIndicadores.data_atendimento <=' => $data_fim,
                    )
                )
            );

            if($count > 0){
                $indicadores['inidicador_sub_grupo'][$i]['total'] = $count;
                $busca_sub_grupos = $this->SubGrupo->find("first",
                    array("conditions" => array("SubGrupo.id =" => $i)));
                $indicadores['inidicador_sub_grupo'][$i]['SubGrupo'] = $busca_sub_grupos['SubGrupo'];

                $media = $this->find('first',
                    array(
                        "conditions" => array("GerarIndicadores.id_sub_grupo =" => $i),
                        'fields' => array(
                            "FORMAT(AVG(GerarIndicadores.hora_realizada), '#.#0') AS media"
                        )
                    )
                );
                $indicadores['inidicador_sub_grupo'][$i]['media'] = $media[0]['media'];
            }
        }

        return $indicadores;
  }


    public function prazos($data_inicio = null, $data_fim = null){

        if(is_null($data_inicio) || is_null($data_fim)){
            $data_inicio = date('Y-m-01');
            $data_fim = date('Y-m-t');

            //$data_inicio = '2012-04-02';
            //$data_fim = '2016-04-29';
        }

        $indicadores = array();

        $indicadores['fora_prazo'] = $this->find("count",
            array(
                'conditions' => array(
                    'GerarIndicadores.data_abertura >=' => $data_inicio,
                    'GerarIndicadores.data_atendimento <=' => $data_fim,
                    'GerarIndicadores.data_atendimento > GerarIndicadores.data_vencimento'
                )
            )
        );
        /**
         * Buscar os GerarIndicadoress que foram antendidos dentro do prazo
         */
        $indicadores['dentro_prazo'] = $this->find("count",
            array(
                'conditions' => array(
                    'GerarIndicadores.data_abertura >=' => $data_inicio,
                    'GerarIndicadores.data_atendimento <=' => $data_fim,
                    'GerarIndicadores.data_atendimento < GerarIndicadores.data_vencimento'
                )
            )
        );


        return $indicadores;
  }


  public function indicadores($data_inicio = null, $data_fim = null){

        if(is_null($data_inicio) || is_null($data_fim)){
            $data_inicio = date('Y-m-01');
            $data_fim = date('Y-m-t');

            //$data_inicio = '2012-04-02';
            //$data_fim = '2016-04-29';

        }

        //$data_inicio = '2012-04-02';
        //$data_fim = '2016-04-29';

        $this->hasMany = array(
            'Unidade' => array(
                'className' => 'Unidade',
            ),
            'Area' => array(
                'className' => 'Area',
            ),
            'Grupo' => array(
                'className' => 'Grupo',
            ),
            'SubGrupo' => array(
                'className' => 'SubGrupo',
            ),
            'Pessoa' => array(
                'className' => 'Pessoa',
            )
        );

        $indicadores = array();

        $GerarIndicadoress = $this->find("count",
            array('conditions' => array('GerarIndicadores.data_abertura >=' => $data_inicio, 'GerarIndicadores.data_atendimento <=' => $data_fim))
        );

        /**
         * Buscar os GerarIndicadoress que foram antendidos fora do prazo
         */
        $indicadores['fora_prazo'] = $this->find("count",
            array(
                'conditions' => array(
                    'GerarIndicadores.data_abertura >=' => $data_inicio,
                    'GerarIndicadores.data_atendimento <=' => $data_fim,
                    'GerarIndicadores.data_atendimento > GerarIndicadores.data_vencimento'
                )
            )
        );
        /**
         * Buscar os GerarIndicadoress que foram antendidos dentro do prazo
         */
        $indicadores['dentro_prazo'] = $this->find("count",
            array(
                'conditions' => array(
                    'GerarIndicadores.data_abertura >=' => $data_inicio,
                    'GerarIndicadores.data_atendimento <=' => $data_fim,
                    'GerarIndicadores.data_atendimento < GerarIndicadores.data_vencimento'
                )
            )
        );

        $unidades = $this->Unidade->listaUnidades();
        /** @var $i equivade ao id_unidade */
        foreach($unidades as $i => $unidade){
            $count = $this->find("count", 
                array("conditions" => array(
                        "GerarIndicadores.id_unidade =" => $i,
                        'GerarIndicadores.data_abertura >=' => $data_inicio,
                        'GerarIndicadores.data_atendimento <=' => $data_fim,
                    )
                )
            );
            if($count > 0){
                $indicadores['inidicador_unidade'][$i]['total'] = $count;
                $busca_unidades = $this->Unidade->find("first",
                    array("conditions" => array("Unidade.id =" => $i)));
                $indicadores['inidicador_unidade'][$i]['Unidade'] = $busca_unidades['Unidade'];
            }
        }


        $areas = $this->Area->listaAreas();
         /** @var $i equivade ao id_area */
        foreach ($areas as $i => $area) {
            $count = $this->find("count",
                array("conditions" =>
                    array(
                        "GerarIndicadores.id_area =" => $i,
                        'GerarIndicadores.data_abertura >=' => $data_inicio,
                        'GerarIndicadores.data_atendimento <=' => $data_fim,
                    )
                )
            );
            if($count > 0){
                $indicadores['inidicador_area'][$i]['total'] = $count;
                $busca_areas = $this->Area->find("first",
                    array("conditions" => array("Area.id =" => $i)));
                $indicadores['inidicador_area'][$i]['Area'] = $busca_areas['Area'];
            }
        }

        $grupos = $this->Grupo->listagrupo();
         /** @var $i equivade ao id_grupo */
        foreach($grupos as $i => $grupo){
            $count = $this->find("count",
                array("conditions" =>
                    array(
                        "GerarIndicadores.id_grupo =" => $i,
                        'GerarIndicadores.data_abertura >=' => $data_inicio,
                        'GerarIndicadores.data_atendimento <=' => $data_fim,
                    )
                )
            );

            if($count > 0){
                $indicadores['inidicador_grupo'][$i]['total'] = $count;
                $busca_grupos = $this->Grupo->find("first",
                    array("conditions" => array("Grupo.id =" => $i)));

                $indicadores['inidicador_grupo'][$i]['Grupo'] = $busca_grupos['Grupo'];

                $media = $this->find('first',
                    array(
                        "conditions" => array("GerarIndicadores.id_grupo =" => $i),
                        'fields' => array(
                            "FORMAT(AVG(GerarIndicadores.hora_realizada), '#.#0') AS media"
                        )
                    )
                );
                $indicadores['inidicador_grupo'][$i]['media'] = $media[0]['media'];
            }
        }


        $sub_grupos = $this->SubGrupo->listaSubGrupo();
         /** @var $i equivade ao id_grupo */
        foreach($sub_grupos as $i => $sub_grupo){
            $count = $this->find("count",
                array("conditions" =>
                    array(
                        "GerarIndicadores.id_sub_grupo" => $i,
                        'GerarIndicadores.data_abertura >=' => $data_inicio,
                        'GerarIndicadores.data_atendimento <=' => $data_fim,
                    )
                )
            );

            if($count > 0){
                $indicadores['inidicador_sub_grupo'][$i]['total'] = $count;
                $busca_sub_grupos = $this->SubGrupo->find("first",
                    array("conditions" => array("SubGrupo.id =" => $i)));
                $indicadores['inidicador_sub_grupo'][$i]['SubGrupo'] = $busca_sub_grupos['SubGrupo'];

                $media = $this->find('first',
                    array(
                        "conditions" => array("GerarIndicadores.id_sub_grupo =" => $i),
                        'fields' => array(
                            "FORMAT(AVG(GerarIndicadores.hora_realizada), '#.#0') AS media"
                        )
                    )
                );
                $indicadores['inidicador_sub_grupo'][$i]['media'] = $media[0]['media'];
            }
        }

        $pessoas = $this->Pessoa->listaPessoas();

        foreach ($pessoas as $i => $pessoa) {
            $count = $this->find("count",
                array("conditions" =>
                    array(
                        "GerarIndicadores.id_pessoa =" => $i,
                        'GerarIndicadores.data_abertura >=' => $data_inicio,
                        'GerarIndicadores.data_atendimento <=' => $data_fim,
                    )
                )
            );

            if($count > 0){
                $indicadores['Solicitante'][$i]['total'] = $count;

                $busca_pessoas = $this->Pessoa->find("first",
                    array("conditions" => array("Pessoa.id =" => $i)));
                $indicadores['Solicitante'][$i]['Pessoa'] = $busca_pessoas['Pessoa'];
            }

        }
        //print_r($indicadores);exit;
        return $indicadores;
    }

}
?>